open
最高访问权限(即限制最少),所属module或导入该module的地方都能访问open。只能修饰class和class memeber。
public
所属module或导入该module的地方都能访问open。但是对于子类的影响和open不同:
- 非open修饰的class,只能在定义的module中继承;open修饰的不受限制
- 非open修饰的class member,只能在定义的module中重载;open修饰的不受限制
internal
默认权限,只在定义的module内使用;用于app或framework的内部实现
file-private
只在定义的源文件中使用,同一app/framework下的其它文件不能访问
private
只在声明的区域内使用;同一文件中超出区域,不能访问,限制最严格。
最后,附上工程:SwiftAccessControlTest, 实践是最好的学习方法,没有之一。
Comments